package main

import (
	"SmartSearch/internal/config"
	"SmartSearch/internal/routes"
	"SmartSearch/pkg/database"
	"context"
	"flag"
	"fmt"
	"gopkg.in/yaml.v3"
	"log"
	"m7s.live/v5"
	"os"
	"strconv"
)

func main() {
	configDataBytes, err := os.ReadFile("config.yaml")
	if err != nil {
		fmt.Println("读取配置文件失败: ", err)
		return
	}
	cfg := config.Config{}
	err = yaml.Unmarshal(configDataBytes, &cfg)
	if err != nil {
		fmt.Println("解析配置文件失败: ", err)
		return
	}

	if err := database.InitMysql(&cfg); err != nil {
		fmt.Println("Mysql init error: ", err)
		return
	}

	redisClient, err := database.InitRedis(&cfg)
	if err != nil {
		fmt.Println("Redis init error: ", err)
		return
	}

	// 创建Gin应用
	app := routes.InitRouter(redisClient)

	// 启动服务
	if err := app.Run(":" + strconv.Itoa(cfg.App.Port)); err != nil {
		log.Fatalf("Server run error: %s", err)
	}
}

func startM7s() {
	conf := flag.String("c", "config.yaml", "config file")
	flag.Parse()
	// ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(time.Second*100))
	err := m7s.Run(context.Background(), *conf)
	if err != nil {
		return
	}
}
